class PoolController < ApplicationController
  def index
    home
    render :action => 'home'
  end
  
  # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
  verify :method => :post, :only => [ :destroy, :create, :update ],
  :redirect_to => { :action => :list }
  def show
    @requisicao = Requisicao.find(params[:id])
    @events = filtra_eventos(@requisicao.next_events_for_current_state)
    @programadores = Desenvolvedor.find_by_sql("select t.id, t.name
                                from goldberg_users t, desenvolvedores_requisicoes dr, requisicoes r
                                where t.id = dr.desenvolvedor_id
                                and dr.requisicao_id = r.id
                                and r.id = #{params[:id]}")
  end

  def home
    @requisicao_pages, @requisicoes = paginate(:requisicoes, :per_page => 10, :conditions => "estado = 'aguardandoDesenvolvimento' or estado = 'desenvolvimentoConcluido' or estado = 'desenvolvimentoReprovadoPool'")
  end
  
  def req_em_desenv
    @requisicao_pages, @requisicoes = paginate(:requisicoes, :per_page => 10, :conditions => "estado = 'emDesenvolvimento' or  estado = 'escaladaParaDesenvolvedor' or estado = 'desenvolvimentoReprovadoAnal' or estado = 'desenvolvimentoReprovadoPool'")     
  end
  
  def show_req
    @requisicao = Requisicao.find(params[:id])
    @events = filtra_eventos(@requisicao.next_events_for_current_state)
  end
  
  def minhas_req
  sql = "SELECT r.id, r.descricao, r.created_at, r.estado
          FROM desenvolvedores_requisicoes c, requisicoes r, goldberg_users gu
          where gu.id = c.desenvolvedor_id
          and c.requisicao_id = r.id
          and gu.id = #{Goldberg.user.id}
          and (r.estado = 'escaladaParaDesenvolvedor' 
          or r.estado = 'desenvolvimentoSuspenso' 
          or r.estado = 'emDesenvolvimento')"
          
     @requisicao_pages, @requisicoes = paginate_by_sql(Requisicao, sql, 7)
  end
  
  def escalarDesenvolvedor
    msg = ''
    @requisicao = Requisicao.find(params[:id])
    if !$lista_desenv.empty?
      for i in $lista_desenv
        @requisicao.desenvolvedores << Desenvolvedor.find(i)
      end
    for desenv in @requisicao.desenvolvedores 
      msg = msg + desenv.fullname + '; '
    end
    @requisicao.escalarDesenvolvedor!  
    historico = Historico.new
    historico.observacao = 'Mensagem Padrão - Desenvolvedores: ' + msg
    historico.usuario_id = Goldberg.user.id
    historico.estado = @requisicao.estado
    @requisicao.historicos << historico       
    redirect_to :action => "home"
  else
    flash[:notice] = 'Adicione pelomenos um desenvolvedor'
    redirect_to :controller => "requisicoes", :action => "escalarDesenvolvedor_tela", :id => @requisicao
  end 
    
  end
  
  def add_desenvolvedor
    @requisicao = Requisicao.find(params[:requisicao][:req_id])
    desenv_existentes = @requisicao.desenvolvedores.collect
    @desenv = Desenvolvedor.find(params[:desenvolvedor][:id])
    aux = nil
    for i in $lista_desenv #iniciada em requisicoes_controller 
      if i == @desenv.id.to_i
          aux = i.to_i
          @desenv = nil
          flash[:notice] = "Desenvolvedor ja escalado"
      end
    end
    if aux.nil?
      $lista_desenv << @desenv.id.to_i
    end
    if $lista_desenv.empty?
      @desenv = Desenvolvedor.find(params[:desenvolvedor][:id])
      $lista_desenv << @desenv.id.to_i
    end      
  end
  def del_desenv
    @requisicao = Requisicao.find(params[:requisicao])
    @requisicao.desenvolvedores.delete(Desenvolvedor.find(params[:id]))
    render :update do |page|
      page.remove(params[:id])
    end
  end
  def del_certificador
    aux = []
    for i in $lista_desenv
      if i != params[:id].to_i
        aux << i.to_i
      end
    end
    $lista_desenv = aux
    @desenv = Desenvolvedor.find(params[:id])
    #      @requisicao = Requisicao.find(params[:req_id])
    #      @requisicao.desenvolvedores.delete(@desenv)
    render :update do |page|
      page.remove(@desenv.dom_id)
    end
  end
  
  def aprovarDesenvolvimento
    historico = Historico.new
    historico.attributes = params[:historico]
    historico.usuario_id = Goldberg.user.id
    @requisicao = Requisicao.find(historico.requisicao_id)
    @requisicao.aprovarDesenvolvimento!
    historico.estado = @requisicao.estado
    @requisicao.historicos << historico
    flash[:notice] = 'Operação realizada com sucesso.'        
    redirect_to :action => 'home'
  end
  
  def reprovarDesenvolvimento
    historico = Historico.new
    historico.attributes = params[:historico]
    historico.usuario_id = Goldberg.user.id
    @requisicao = Requisicao.find(historico.requisicao_id)
    @requisicao.reprovarDesenvolvimento!
    historico.estado = @requisicao.estado
    @requisicao.historicos << historico
    flash[:notice] = 'Operação realizada com sucesso.'        
    redirect_to :action => 'home'
  end
end